package com.stylefeng.guns.modular.apple_sign_task_manage.dao;

import com.stylefeng.guns.modular.apple_sign_task_manage.bo.SignTaskBO;
import com.stylefeng.guns.modular.apple_sign_task_manage.model.DeviceInfoOfAppDO;
import com.stylefeng.guns.modular.apple_sign_task_manage.model.DeviceTotalCountDO;
import com.stylefeng.guns.modular.apple_sign_task_manage.model.MerchantInfoDO;
import com.stylefeng.guns.modular.apple_sign_task_manage.model.SignTasks;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;

import java.util.List;

/**
 * <p>
 * 签包任务表 Mapper 接口
 * </p>
 *
 * @author godrui
 * @since 2020-06-20
 */
public interface SignTasksMapper extends BaseMapper<SignTasks> {
    //签包任务列表数据
    List<SignTaskBO> listSignTask(@Param("sortValue") String sortValue,
                                  @Param("userId") Integer userId,
                                  @Param("start") Integer start,
                                  @Param("count") Integer count,
                                  @Param("status") Integer status,
                                  @Param("signBeginTime") String signBeginTime,
                                  @Param("signEndTime") String signEndTime);
    //获取总的设备数量
    DeviceTotalCountDO findDeviceTotalCount(@Param("userId") Integer userId,
                                            @Param("beginTime") String beginTime,
                                            @Param("endTime") String endTime);
    // 获取总的应用数量
    Integer findAllAppCount(@Param("userId") Integer userId,
                            @Param("beginTime") String beginTime,
                            @Param("endTime") String endTime);
    // 查询每日签包数量
    List<DeviceInfoOfAppDO> findEveryDaySignCount(@Param("userId") Integer userId,
                                                @Param("beginTime") String beginTime,
                                                @Param("endTime") String endTime);
    // 查询商户号设备安装信息
    List<MerchantInfoDO> findMerchantSignInfo(@Param("merchantId") String merchantId,
                                              @Param("beginTime") String beginTime,
                                              @Param("endTime") String endTime);
    //查询签包任务数量
    Integer findSignCount(@Param("userId") Integer userId,
                          @Param("status") Integer status,
                          @Param("signBeginTime") String signBeginTime,
                          @Param("signEndTime") String signEndTime);

    void updateSignStatus(@Param("appAccount") String account,
                          @Param("status") Integer status);

    @Update("update sign_tasks set output_path = replace(output_path, #{oldDomain}, #{newDomain});")
    void updateSignOutputDomain(@Param("oldDomain") String oldDomain,
                                @Param("newDomain") String newDomain);

    /**
     * 查询商户已用设备数量
     * @return
     */
    List<MerchantInfoDO> findMerchantUsedCount();

    /**
     * 查询商户已用设备数量 - 用于商户设备管理列表的展示
     * @return
     */
    List<MerchantInfoDO> findMerchantUsedCount2();
//查询已使用的所有设备数
    Integer findUsedDeviceCount();

}
